Recent technological advances have enabled increasingly higher network bandwidths. In order to fully utilize the increased network bandwidth, block-oriented protocols continue to increase the amount of data sent at a time. For example, the amount of data transmitted within a burst block has increased significantly. Moreover, these higher network bandwidths are reducing the packet buffer sizes in network switches because the packet buffers must be very fast to support the higher network bandwidths. To provide fast access, the packet buffers are often placed directly inside the network switch chip, in close proximity to the packet processing. Since there is limited space and thus limited available memory on these chips, packet buffer sizes have significantly reduced. Either of these two factors, increased data block size or reduced packet buffer size, can significantly negatively impact network performance. For example, the potential for data packets being dropped is increased because the data packets may be received in a burst and do not fit within the available packet buffer space. This is especially true if the incoming link has a higher data rate than the outgoing link (e.g. a 1 Gb/s server feeding a 100 Mb/s desktop), so the block burst cannot be just passed through, but must be buffered up to be transmitted at the lower data rate.
Data transfer protocols, such as Transmission Control Protocol (TCP), provide mechanisms for managing dropped packets. TCP is able to notify a sender of a dropped packet upon the receipt of the next two sequential packets in the burst block (TCP is stream-oriented, not block-oriented). The sender will then retransmit the dropped packet, so the receiver will not lose any packet data. Other data transfer protocols provide similar mechanisms for managing packets dropped from the beginning or middle of a burst block.
However, acknowledgement mechanisms for data packets dropped from the end of a burst block are typically very slow. For example, TCP behaves such that when one of the last two packets of a burst is lost there is a much greater delay to recover than when any other packet in the burst is lost. Since there are not two packets of the burst block following either of the last two packets, there is no quick mechanism to notify the sender of a dropped packet. If one of the last two packets is dropped, the destination and sender assume the packet was delayed, and wait for a timeout to occur before resending the packet. A timeout may take a very long time to happen, e.g., on the order of seconds. As a result of waiting for the timeout before resending, network performance drops precipitously. Dropping the last packet or packets of a burst is a performance issue because the acknowledgment mechanism is typically very slow to recover from these packet losses.
Current mechanisms for managing how incoming packets are dropped from a filled packet buffer can exacerbate the drop in network performance. One such mechanism, tail dropping, drops all incoming packets if the packet buffer is full. This is very likely to result in dropping packets at the end of the burst block, the very packets which take the longest to be resent.
Another mechanism, random early drop (RED) attempts to improve on tail dropping by randomly dropping packets from within the packet buffer to make room for potential new packets, thus attempting to reduce the traffic load by causing TCP backoff mechanisms to engage. This scheme may drop earlier packets, but still has a reasonable chance that the last packet of a burst is dropped as it does not differentiate its drops across the burst. There are many variants of RED, such as Weighted Random Early Discard (WRED), REM, DRED, BLUE, etc., all of which drop packets without distinction of location within a burst. Schemes that drop the last packet with equal probability to any other packet are vulnerable to significant performance impacts from the lost final packets.
The drawings referred to in this description should not be understood as being drawn to scale except if specifically noted.